﻿#include<iostream>
using namespace std;
int ave(int* pa, int count) {
	return 0;
}
int ave(int pa[], int count) {//报错，因为数组就是指针
	return 0;
}

float ave(float a, float b) {
	return (a + b) / 2;
}
int ave(const int& a, const int& b) {
	return (a + b) / 2;
}
int ave(int& a, int& b) {//编译器能通过
	return (a + b) / 2;
}
int ave(int a, int b) {
	return (a + b) / 2;
}
int ave(int& a, int& b) {
	return (a + b) / 2;
}
float ave(int a, int b) {//报错，因为返回值返回什么都可以，但是传入参数相同
	return (a + b) / 2;
}
int ave(int a, int b, int c) {
	return (a + b + c) / 2;
}
int ave(float a, float b, float c) {
	return (a + b + c) / 2;
}
int ave(int a, int b, int c, int d = 100) {
	return (a + b + c) / 2;
}
int main() {
	const int a{ 1 }, b{ 2 };
	cout << ave(a, b) << endl;//报错，ave(1, 2)中的1和2是常量，不可能传入引用，这个a和b都是变量，能传入

	cout << ave(a, b) << endl;

	char c{ 100 };
	char d{ 200 };
	cout << ave((int)c, (int)d) << endl;//强转类型后的参数是临时变量，无法传入引用，所以还是float

	cout << ave(1, 2) << endl;//1
	cout << ave(1, 2, 3) << endl;//3
	cout << ave(1.0f, 2.0f, 3.0f) << endl;//3
	cout << ave(1.0f, 2.0f) << endl;//通过类型转换到int，执行第一个函数
}